#pragma once

struct OnScreenMessage
{
	std::string			m_message;
	glm::vec4			m_color;
	glm::vec2			m_position;
};

class CUserInterface:
	public IUserInterface,
	public ITypeRenderer
{
public:
	CUserInterface();
	~CUserInterface();

	void		InitializeUI(int x, int y);
	void		AddMessage(const std::string& msg, const glm::vec4& color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f));

	void		RenderType(uint arg);

private:
	void		RenderUserInterface();

	void		RenderMessages();

	GLM_MAT4x4	m_uiMatrix;

	std::vector<OnScreenMessage>	m_messages;
	IMutex*							m_messages_mutex;
};
	
